package com.jichaoyun.sys.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jichaoyun.model.entity.StationInfo;

import com.jichaoyun.common.model.Result;
import com.jichaoyun.model.vo.ComParametersVo;
import com.jichaoyun.model.vo.StationParametersVo;


import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDate;
import java.util.List;
import java.util.Map;

public interface IStationInfoService extends IService<StationInfo> {

    /**
     * 根据站点名称获取电话号码
     * @param stationName
     * @return
     */
    String getTelByStationName(String stationName);

    /**
     * 查询用户所有站点名称
     * @param id
     * @return
     */
    List<Map<String,Object>> getStationNameList(Integer id);

    /**
     * 查询用户线路分布情况
     * @return
     */
    Map<String,Integer> getUserLineDistribution();

    /**
     * 查询用户类别分布
     * @return
     */
    Map<String,Integer> getUserCategory();

    /**
     * 获取所有站点信息
     * @return
     */
    IPage<StationInfo> getAllStationInfo(Integer pageNo);

    /**
     *查找所有站点信息
     * @param pageNo
     * @param pageSize
     * @return
     */
    IPage<StationInfo> getAllStationInfo(Integer pageNo,Integer pageSize);


    List<StationInfo> getAllStationInfo();

    /**
     * 修改站点启用状态
     * @param stationNo
     * @return
     */
    Result<Object> updateStationStatus(Integer stationNo);

    /**
     * 修改站点参数信息
     * @param stationParameters
     */
    void updateStationInfo(StationParametersVo stationParameters);

    /**
     * 修改站点通讯参数信息
     * @param comParameters
     */
    void updateComParameters(ComParametersVo comParameters);

    /**
     * 根据站号查看所属线路名称
     * @param station_no
     * @return
     */
    String getLineNameByStationNo(Integer station_no);

    /**
     * 增加站点信息
     * @param stationInfo
     */
    void addStationInfo(StationInfo stationInfo);

    /**
     * 设置报表结算的小时和日期
     * @param id
     * @param account_date
     * @param account_hour
     */
    void updateAccountDateAndHour(Integer id,Integer account_date, Integer account_hour);

    Integer getAccountHourByStation(Integer station_no);

    Integer getAccountDateByStation(Integer station_no);

    /**
     *模糊查询站名
     * @param likeName
     * @return
     */
    List<String> getStationNoNameListByLikeName(String likeName);

    /**
     * 根据日期返回当日流速排名
     * @param date
     * @return
     */
    Map<String,Float> getFlowRankListByDate(LocalDate date);

    /**
     * 根据日期返回当日平均温度排名
     * @param date
     * @return
     */
    Map<String,Float> getTempRankListByDate(LocalDate date);

    /**
     * 根据日期返回当日平均压力排名
     * @param date
     * @return
     */
    Map<String,Float> getPresRankListByDate(LocalDate date);
    List<StationInfo> getAllUsedStation();

    /**
     * 查询所有非叶子节点
     * @return
     */
    List<StationInfo> getAllLineStation();

    /**
     * 所有站点信息表，导出到Excel
     * @param response
     * @throws IOException
     */
    void getAllStationExcel(HttpServletResponse response) throws IOException;
}
